# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your Archipelago options are valid at this site:
#        https://archipelago.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default Harry Potter 2 PC Template

game: Harry Potter 2 PC
requires:
  version: 0.6.7 # Version of Archipelago required for this yaml to work as expected.

Harry Potter 2 PC:
  ################
  # Game Options #
  ################
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-99: 0 # random value between 0 and 99
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  game_mode:
    # Which install layout this seed targets.
    # 
    # `vanilla` (default): retail HP2 + M212 patch, the normal story flow.
    # Whether the 7 story regions gate behind bookcases (the Progressive Level
    # Key chain plus the Duelling / Quidditch keys) or open immediately is
    # governed by `vanilla_gate_levels`. The other 7 keys are always
    # precollected here.
    # 
    # `open_castle`: the HP2 Bingo community pack's distribution maps (every
    # door unlocked from spawn). All 14 bookcase-blocker keys are AP items
    # gating each level transition.
    # 
    # Harry's starting spells are set by `starting_spells`, not by this option.
    vanilla: 50
    open_castle: 0

  starting_spells:
    # Spells Harry starts with. Any spell not listed is an AP item instead.
    # 
    # The `vanilla` game mode physically requires Lumos and Flipendo to finish
    # the Whomping Willow level. If either is missing here in vanilla, they are
    # added automatically, since the seed would otherwise have nowhere reachable
    # to place them. Open castle leaves the set untouched.
    # 
    # Valid spells: Lumos, Flipendo, Alohomora, Rictusempra, Skurge, Diffindo, Spongify.
    ['Lumos', 'Flipendo', 'Alohomora']

  allow_running_logic:
    # How much running the logic assumes. Applies in both game modes.
    # 
    # `off`: no running is expected.
    # `on`: Running becomes a logic flag and certain regions or locations become
    # reachable earlier.
    # `difficult`: everything `on` covers, plus the running tricks with tight
    # timing or precise positioning, e.g. in Castle Exterior.
    # 
    # Anything above `off` makes sprinting free (no bean cost, and usable at 0
    # beans), so the running this logic relies on is genuinely always available.
    'off': 50
    'on': 0
    difficult: 0

  #################################
  #            VANILLA            #
  #################################
  vanilla_gate_levels:
    # Vanilla only. If true, the 7 story regions are gated: the mod spawns a
    # bookcase blocking each region until its key arrives. The 5 level regions
    # (Bicorn, Boomslang, Goyle, Slytherin Common Room, Forbidden Forest) form a
    # cumulative chain matching vanilla's linear story order, so they are gated
    # by 5 copies of one Progressive Level Key item: each copy received unlocks
    # the next level in that order. Duelling and Quidditch are standalone and
    # keep their own named keys.
    # 
    # If false, all region keys are precollected instead, so the regions open
    # immediately and no bookcases spawn (the classic vanilla flow).
    'false': 0
    'true': 50

  allow_missable_progression:
    # Vanilla-only (ignored in open castle). If true, missable locations in
    # un-replayable vanilla levels (Willow, Bicorn, Boomslang, Goyle, Slytherin
    # Common, Forest and Chamber) are allowed to hold progression items. This covers
    # missable secrets (when `enable_secrets` is true) and, when `containersanity`
    # is on, the containers in those same one-way regions.
    # 
    # If false, those missable locations are filler-only, which is safer because
    # the player can't soft-lock by missing a one-way check. Locations in
    # replayable areas (hubs, the spell challenges) always allow progression
    # regardless of this setting; this flag only gates the un-replayable subset.
    # 
    # Open castle makes every level infinitely replayable, so nothing is
    # missable there and this option has no effect.
    'false': 50
    'true': 0

  #################################
  #          OPEN CASTLE          #
  #################################
  open_castle_goal_cards:
    # Open castle only. Wizard cards needed to open the Great Hall. 0
    # disables this clause. Counts cards Harry actually owns (including AP-granted).
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 101
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-101: 0 # random value between 0 and 101
    none: 0 # equivalent to 0
    few: 0 # equivalent to 25
    half: 50 # equivalent to 50
    most: 0 # equivalent to 80
    all: 0 # equivalent to 101

  open_castle_goal_spells:
    # Open castle only. Spells needed to open the Great Hall. 0 disables
    # this clause. (If every open castle goal clause is 0/off, this is forced
    # to 7.)
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 7
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-7: 0 # random value between 0 and 7
    none: 0 # equivalent to 0
    all: 50 # equivalent to 7

  open_castle_goal_levels:
    # Open castle only. Level objectives finished to open the Great Hall. 0
    # disables. 13 objectives: 3 key-item levels + 2 bosses + 2 story levels
    # + 5 challenges + the Gold Card Room.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 13
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-13: 0 # random value between 0 and 13
    none: 0 # equivalent to 0
    all: 50 # equivalent to 13

  open_castle_goal_duels:
    # Open castle only. If true, all 10 Duelling Club duels must be won to
    # open the Great Hall.
    'false': 50
    'true': 0

  open_castle_goal_quidditch:
    # Open castle only. If true, all 6 Quidditch matches must be won to open
    # the Great Hall.
    'false': 50
    'true': 0

  #################################
  #       CATEGORY TOGGLES        #
  #################################
  enable_wizard_cards:
    # Card shuffle. The 101 wizard cards are always AP locations; this only
    # chooses how the card items are placed.
    # 
    # true: cards are shuffled into the multiworld pool.
    # false: each card is locked to its own original spot.
    'false': 0
    'true': 50

  enable_secrets:
    # If true, the 109 Secrets become AP locations, plus open castle's 9 in
    # the Gryffindor challenge (118 total in open castle).
    'false': 0
    'true': 50

  enable_challenge_stars:
    # If true, the Challenge Stars become AP locations:
    # 44 across the 4 spell-challenges (Rictusempra, Skurge, Diffindo, Spongify),
    # plus 10 in open castle's Gryffindor challenge (54 total in open castle).
    'false': 0
    'true': 50

  containersanity:
    # If true, ~283 in-world containers (chests without cards, cauldrons,
    # cigar / jewel / music boxes, decanters, oil cans, plant pots, vases,
    # knights, ingredient spawners, statues, toilets) each become a location.
    'false': 50
    'true': 0

  tradersanity:
    # Every non-Weasley card vendor and ingredient vendor sells one AP
    # location check on its first sale, then permanently reverts to selling its
    # normal cards or ingredient. The price mode sets what that AP sale costs:
    # 
    # off: vendors sell their normal stock only, no AP checks.
    # 
    # price_vanilla: a normal in-game price. Ingredient vendors keep their real
    # price; card vendors charge a card-like price.
    # 
    # price_random: a random price per vendor, fixed for the whole seed, from
    # 10 to 250 beans.
    # 
    # price_low: a flat low price of 10 beans for every vendor.
    'off': 50
    price_vanilla: 0
    price_random: 0
    price_low: 0

  enable_quidditch_upgrades:
    # If true, the Nimbus 2001 from Fred and the Quidditch Armour from George
    # become locations.
    'false': 50
    'true': 0

  tradersanity_hint_on_open:
    # If true, opening a Tradersanity vendor's dialogue for the first time
    # publishes a broadcast hint for that vendor's AP check.
    # No effect when `tradersanity` is off.
    'false': 0
    'true': 50

  skip_vendor_voices:
    # If true, every vendor's in-trade voice cues (sell / transaction-done
    # / decline / narrator instruction / Harry's inquiry) are skipped.
    'false': 50
    'true': 0

  enable_duelling:
    # If true, each of the 10 duels at the Duelling Club becomes a location.
    'false': 50
    'true': 0

  enable_quidditch_matches:
    # If true, each of the 6 Quidditch matches becomes a location.
    'false': 50
    'true': 0

  enable_spell_challenge_times:
    # If true, beating the replay par time ("Mastered") on each of the 4
    # spell challenges (Rictusempra, Skurge, Diffindo, Spongify) becomes a
    # location.
    'false': 50
    'true': 0

  #################################
  #         TRAP SETTINGS         #
  #################################
  traps:
    # Which trap types may appear in your item pool. Traps replace a fraction
    # (set by `trap_fill_percent`) of the filler. Pick any subset.
    # 
    # An empty set means no traps at all.
    # 
    # Valid traps:
    # Polyjuice Potion Trap (turns Harry into Goyle for the rest of the level)
    # Engorgio Trap (giant Harry ~30s)
    # Reducio Trap (tiny Harry ~30s)
    # Overcompensation Trap (giant wand for the rest of the level)
    # Levicorpus Trap (Harry hangs upside down ~30s)
    # Jelly-Legs Jinx Trap (jumping disabled ~20s while Harry jumps at random)
    # Bean Thief Trap (steals up to 200 beans)
    # Drowsiness Draught Trap (sleepy slow ~20s)
    # Confundus Trap (inverted camera look ~20s)
    # Obliviate Trap (spellbook withheld ~30s)
    ['Polyjuice Potion Trap', 'Engorgio Trap', 'Reducio Trap', 'Overcompensation Trap', 'Levicorpus Trap', 'Jelly-Legs Jinx Trap', 'Bean Thief Trap', 'Drowsiness Draught Trap', 'Confundus Trap', 'Obliviate Trap']

  trap_fill_percent:
    # Percentage of filler items replaced with traps when `traps` is non-empty.
    # Does nothing when `traps` is empty.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 5
    # Maximum value is 50
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-5-50: 0 # random value between 5 and 50

  #################################
  #            LINKING            #
  #################################
  death_link:
    # When you die, everyone who enabled death link dies. Of course, the reverse is true too.
    'false': 50
    'true': 0

  trap_link:
    # If true, every trap you receive is also sent to all other TrapLink
    # slots in the room, and traps they receive are applied to you. Inbound
    # traps from another HP2 slot apply by name; a trap from a different game
    # (whose name HP2 has no effect for) maps to a random HP2 trap, so a linked
    # player always feels something. Independent of `traps`: you still receive
    # linked traps even if your own seed generates none. Inbound traps respect
    # your `traps` selection. A trap you turned off is remapped to one you kept
    # (unless `traps` is empty, in which case any of the ten can land).
    'false': 50
    'true': 0

  ring_link:
    # If true, in-game bean pickups and vendor spending are mirrored
    # to every other RingLink slot in the room, and their currency changes
    # are applied to yours. AP-granted bean filler and the Bean Thief trap
    # are not mirrored.
    'false': 50
    'true': 0

  #################################
  #       AUDIO RANDOMIZERS       #
  #################################
  music_randomizer:
    # If true, every music track is swapped for another from the same pool.
    # Requires the client to be run in administrator mode if the game files
    # live inside your program files.
    # 
    # Upon first connect, you need to tell your client where your game files live.
    # 
    # There are 2 music pools:
    # A long-form background music pool and a shorter pool of jingles.
    # 
    # Music can be reshuffled if needed with the /reroll_music command.
    # Music can be restored to their original with the /restore_music command.
    'false': 50
    'true': 0

  sound_randomizer:
    # Shuffle the sound effects, deterministically per seed.
    # Requires the client to be run in administrator mode if the game files
    # live inside your program files.
    # 
    # Upon first connect, you need to tell your client where your game files live.
    # 
    # `off` (default): sound effects are left alone.
    # `on`: every sound effect is swapped for another of similar length (sounds
    # shuffle within their own length band: short / medium / long).
    # `no_footsteps`: the same, but footstep sounds are left alone, since
    # randomizing them can be overwhelming.
    # 
    # Sounds can be reshuffled with the /reroll_sounds command.
    # Sounds can be restored to their original with the /restore_sounds command.
    'off': 50
    'on': 0
    no_footsteps: 0

  dialogue_randomizer:
    # Shuffle the spoken dialogue / voice lines.
    # Requires the client to be run in administrator mode if the game files
    # live inside your program files.
    # 
    # Upon first connect, you need to tell your client where your game files live.
    # 
    # `off` (default): dialogue is left alone.
    # `within_actor`: each character's lines are shuffled among their own, so every
    # character keeps their own voice but says the wrong things.
    # `all_actors`: lines are shuffled across every character, so anyone can speak
    # anyone's line.
    # 
    # Dialogue can be reshuffled with the /reroll_dialogue command.
    # Dialogue can be restored to its original with the /restore_dialogue command.
    'off': 50
    within_actor: 0
    all_actors: 0

  ###########################
  # Item & Location Options #
  ###########################
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with the specified amount of these items. Example: "Bomb: 1"
    {}

  start_inventory_from_pool:
    # Start with the specified amount of these items and don't place them in the world. Example: "Bomb: 1"
    # 
    # The game decides what the replacement items will be.
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []

  plando_items:
    # Generic items plando.
    []
